您可以使用资源编排服务ROS(Resource Orchestration Service)创建资源栈,在资源栈中创建资源,并同时为资源绑定标签,方便日后的运维管理。支持为多个云资源批量绑定或更新标签,提升运维效率。
背景信息
本文将使用ROS Python SDK创建资源栈。更多信息,请参见Python SDK使用示例。
为多个云资源绑定相同标签
如下将提供一个示例,使用资源栈创建专有网络VPCmytest-vpc和交换机vSwitchmytest-vsw-h,并同时为VPC和vSwitch绑定app:test标签。
- 编写模板。
{ "ROSTemplateFormatVersion": "2015-09-01", "Resources": { "VPC": { "Type": "ALIYUN::ECS::VPC", "Properties": { "VpcName": "mytest-vpc" } }, "VSwitch": { "Type": "ALIYUN::ECS::VSwitch", "Properties": { "VpcId": { "Ref": "VPC" }, "ZoneId": "cn-hangzhou-h", "CidrBlock": "172.16.0.0/24", "VSwitchName": "mytest-vsw-h" } } } }模板说明:创建一个VPC和一个vSwitch。
- 创建资源栈,并为VPC和vSwitch绑定标签
app:test。# pip install alibabacloud_ros20190910 from alibabacloud_ros20190910.client import Client as ROS20190910Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_ros20190910 import models as ros20190910_models AK = '<AccessKeyId>' SECRET = '<AccessKeySecret>' REGION = '<RegionId>' # 例如:'cn-beijing'、'cn-hangzhou'。 template = ''' <Template> ''' def create_client( access_key_id: str, access_key_secret: str, ) -> ROS20190910Client: """ 使用AccessKey初始化账号Client。 @param access_key_id: @param access_key_secret: @return: Client @throws Exception """ config = open_api_models.Config( # 您的AccessKey ID。 access_key_id=access_key_id, # 您的AccessKey Secret。 access_key_secret=access_key_secret, ) # 访问的域名。 config.endpoint = 'ros.aliyuncs.com' return ROS20190910Client(config) def create_stack(region_id, stack_name, template_body, timeout_in_minutes=40, parameters=[], tags=[]): """create stack""" create_stack_request = ros20190910_models.CreateStackRequest( region_id=region_id, stack_name=stack_name, # 若模板较大,建议使用TemplateURL参数,避免URL过长,调用失败。 # 您也可以使用Body Param + HTTP POST的方式传递模板内容。 template_body=template_body, timeout_in_minutes=timeout_in_minutes, parameters=parameters, tags=tags, disable_rollback=True ) response = client.create_stack(create_stack_request) return response.body client = create_client(AK, SECRET) tags = [ ros20190910_models.CreateStackRequestTags( key='app', value='test' ) ] print(create_stack(REGION, 'MyStack', template, tags=tags, timeout_in_minutes=60))参数说明:
- <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
- <Template>请替换为步骤1中的模板。
- 可选:登录专有网络管理控制台,查看VPC和vSwitch绑定的标签。
当VPC和vSwitch都绑定了标签
app:test,表示操作成功。
为多个云资源绑定不同标签
如下将提供一个示例,使用资源栈创建专有网络VPC
mytest-vpc和交换机vSwitchmytest-vsw-h,为VPC和vSwitch绑定通用标签app:test,除此之外还要为vSwitch绑定特定标签group:test。最终效果为:- VPC
mytest-vpc绑定的标签:app:test。 - vSwitch
mytest-vsw-h绑定的标签:app:test和group:test。
- 编写模板。
{ "ROSTemplateFormatVersion": "2015-09-01", "Resources": { "VPC": { "Type": "ALIYUN::ECS::VPC", "Properties": { "VpcName": "mytest-vpc" } }, "VSwitch": { "Type": "ALIYUN::ECS::VSwitch", "Properties": { "VpcId": { "Ref": "VPC" }, "ZoneId": "cn-hangzhou-h", "CidrBlock": "172.16.0.0/24", "VSwitchName": "mytest-vsw-h", "Tags": [{ "Key": "group", "Value": "test" }] } } } }模板说明:创建一个VPC和一个vSwitch,并为vSwitch绑定特定标签
group:test。 - 创建资源栈,并为VPC和vSwitch绑定通用标签
app:test。# pip install alibabacloud_ros20190910 from alibabacloud_ros20190910.client import Client as ROS20190910Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_ros20190910 import models as ros20190910_models AK = '<AccessKeyId>' SECRET = '<AccessKeySecret>' REGION = '<RegionId>' # 例如:'cn-beijing'、'cn-hangzhou'。 template = ''' <Template> ''' def create_client( access_key_id: str, access_key_secret: str, ) -> ROS20190910Client: """ 使用AccessKey初始化账号Client。 @param access_key_id: @param access_key_secret: @return: Client @throws Exception """ config = open_api_models.Config( # 您的AccessKey ID。 access_key_id=access_key_id, # 您的AccessKey Secret。 access_key_secret=access_key_secret, ) # 访问的域名。 config.endpoint = 'ros.aliyuncs.com' return ROS20190910Client(config) def create_stack(region_id, stack_name, template_body, timeout_in_minutes=40, parameters=[], tags=[]): """create stack""" create_stack_request = ros20190910_models.CreateStackRequest( region_id=region_id, stack_name=stack_name, # 若模板较大,建议使用TemplateURL参数,避免URL过长,调用失败。 # 您也可以使用Body Param + HTTP POST的方式传递模板内容。 template_body=template_body, timeout_in_minutes=timeout_in_minutes, parameters=parameters, tags=tags, disable_rollback=True ) response = client.create_stack(create_stack_request) return response.body client = create_client(AK, SECRET) tags = [ ros20190910_models.CreateStackRequestTags( key='app', value='test' ) ] print(create_stack(REGION, 'MyStack', template, tags=tags, timeout_in_minutes=60))参数说明:
- <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
- <Template>请替换为步骤1中的模板。
- 可选:登录专有网络管理控制台,查询VPC和vSwitch绑定的标签。
当VPC绑定的标签为
app:test,vSwitch绑定的标签为app:test和group:test时,表示操作成功。
为多个云资源更新标签
如下将提供一个示例,在为多个云资源绑定相同标签的基础上,将VPCmytest-vpc和vSwitchmytest-vsw-h已绑定的标签app:test更新为app:normal。
- 创建资源栈,并为VPC和vSwitch绑定新标签
app:normal。# pip install alibabacloud_ros20190910 from alibabacloud_ros20190910.client import Client as ROS20190910Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_ros20190910 import models as ros20190910_models AK = '<AccessKeyId>' SECRET = '<AccessKeySecret>' REGION = '<RegionId>' # 例如:'cn-beijing'、'cn-hangzhou'。 template = ''' <Template> ''' def create_client( access_key_id: str, access_key_secret: str, ) -> ROS20190910Client: """ 使用AccessKey初始化账号Client。 @param access_key_id: @param access_key_secret: @return: Client @throws Exception """ config = open_api_models.Config( # 您的AccessKey ID。 access_key_id=access_key_id, # 您的AccessKey Secret。 access_key_secret=access_key_secret, ) # 访问的域名。 config.endpoint = 'ros.aliyuncs.com' return ROS20190910Client(config) def create_stack(region_id, stack_name, template_body, timeout_in_minutes=40, parameters=[], tags=[]): """create stack""" create_stack_request = ros20190910_models.CreateStackRequest( region_id=region_id, stack_name=stack_name, # 若模板较大,建议使用TemplateURL参数,避免URL过长,调用失败。 # 您也可以使用Body Param + HTTP POST的方式传递模板内容。 template_body=template_body, timeout_in_minutes=timeout_in_minutes, parameters=parameters, tags=tags, disable_rollback=True ) response = client.create_stack(create_stack_request) return response.body client = create_client(AK, SECRET) tags = [ ros20190910_models.CreateStackRequestTags( key='app', value='normal' ) ] print(create_stack(REGION, 'MyStack', template, tags=tags, timeout_in_minutes=60))参数说明:
- <AccessKeyId>和<AccessKeySecret>请替换为您实际的AccessKey ID 和AccessKey Secret。
- <Template>请替换为为多个云资源绑定相同标签中的模板。
- 可选:登录专有网络管理控制台,查询VPC和vSwitch绑定的标签。
当VPC和vSwitch都绑定了新标签
app:normal时,表示操作成功。
该文章对您有帮助吗?